<?php

require_once dirname(__FILE__) . '/../../php/texyla.php';

/**
 * Edit by krteczek for Texyla for WordPress Plugin
 * Load wordpress config && activate user permisions etc
 */
require_once(dirname(__FILE__) . '/../../../../../../../wp-config.php');
require_once(dirname(__FILE__) . '/../../../../../../../wp-admin/admin.php');

// přiřazení ikonek k typům souborů podle jejich extense
// Nutno připravit obrázky a jejich názvy upravit podle potřeby


class texylaFileBrowser {

	public $ROOT = '/'; // absolutní cesta (po disku) ke kořenovému adresáři pro ukládání souborů )
	public $wwwRoot = ''; // relativní cesta (http adresa) ke kořenovému adresáři pro ukládání souborů
	public $ikonsForFileType = array (
		// obrázky *
		'img' => array (
			'jpg',
			'gif',
			'png',
			'jpeg',
		),
		// Flash *
		'flash' => array (
			'swf',
		),
		// komprimované *
		'package' => array (
			'gz',
			'zip',
			'tgz',
			'tar',
			'rar',
			'arj',
			'deb',
		),
		// documents *
		'doc' => array (
			'pdf',
			'rtf',
			'doc',
		),
		// audio
		'sound' => array (
			'mp3',
			'ogg',
		),
		// video *
		'video' => array (
			'mp2',
			'ogm',
			'avi',
			'mpga',
			'mpeg'
		),
		'text' => array(
			'txt',
			'js'

		),
	);
	public function __construct() {
	}
    /**
     * 
     * @param <type> $dirName
     * @param <type> $level
     * @return <type>
     */
	public function getDir($dirName = '', $level = 0) {
		if(empty($dirName)){
			$dirName = $this->ROOT;// nastavit podle své potřeby přes $this->ROOT
		}
		$a = null;
		$dirName = realpath($dirName);
		$dir =  scandir($dirName);
		$path = $this->getFilePath($dirName);
		foreach($dir as $file) {
			$filePath = "$dirName/$file";
			$typ = filetype($filePath);
			$filesize = round(filesize($filePath) / 1024, 3);
			$extension = $this->getFileExtension($filePath);
			$imagesize = $this->getSizeImage($filePath);
			$iconType = $this->getFiletypeIcon($extension);
			$href = $this->wwwRoot . "$path/$file";
			if ($typ == 'file') {
				$a[] = array(
					'name' => $file,
					'href' => $href,
					'title' => "Directory $file",
					'icon' => $iconType,
					'size' => $filesize,
					'filetype' => $typ,
					'extension' => $extension,
					'imagesize' => $imagesize,

				);
			} else if ($typ == 'dir') {
				if ($file == '.' or $file == '..') {
					// vynechání . a .. (nadřazený adresář
				} else {
					$a[] = array(
					'name' => $file,
					'href' => $href,
					'title' => "Download file $file",
					'icon' => 'dir',
					'size' => $filesize,
					'filetype' => $typ,
					'extension' => $extension,
					'subdir' => $this->getDir($filePath, ($level + 1)),
					);
				}
			} else {
				$a[] = array(
					'name' => $file,
					'href' => $href,
					'title' => "Download file $file",
					'icon' => $iconType,
					'size' => $filesize,
					'filetype' => $typ,
					'extension' => $extension,
					'imagesize' => $imagesize,
				);
			}
		}
		return $a;
	}

    private function getFilePath($path) {
        $start = strlen($this->ROOT);
        return substr($path, $start);
     }
	private function getFileExtension($name) {
		$a = explode('.', $name);
		return strtolower($a[count($a) - 1]);
	}

	private function getSizeImage($file){
		$size = @getImageSize($file);
		if (is_array($size)) {
			return array($size[0], $size[1]);
		}
		return null;
	}
	private function getFiletypeIcon($extension) {
		// získáme jméno ikonky
		foreach ($this->ikonsForFileType as $key => $array) {
			if (in_array($extension, $array)) {
				return $key;
			}
		}
		return 'unknown';
	}

}

$v = new texylaFileBrowser;
// $v->wwwRoot = 'http://' . $_SERVER['SERVER_NAME'] . '/texyla/files/';
$v->wwwRoot = get_settings('siteurl') . '/wp-content/uploads/';
//$v->ROOT = realpath(dirname(__FILE__) . '/../../../files/') . '/';
$v->ROOT = realpath(dirname(__FILE__) . '/../../../../../../uploads/') . '/';

echo json_encode(array('files' => $v->getDir()));


